package src.C_io;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

// 纯文本文档拷贝
public class Demo08 {
    public static void main(String[] args) {
        FileReader fr = null;
        FileWriter fw = null;
        try {
            fr = new FileReader("src\\C_io\\c.txt");
            fw = new FileWriter("src\\C_io\\d.txt",false);
            int b;
            char[] chars = new char[2];
            while ((b = fr.read(chars)) != -1){
                fw.write(chars,0,b);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            try {
                if (fw != null){
                    fw.close();
                }
                if (fr != null){
                    fr.close();
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
    /*

     相比于前面两个字节流，后面两个字符流多了个缓冲区！（debug控制台bb-hb查看缓冲区）

     new FileReader("") 对象时底层会关联文件，并创建缓冲区（长度为8192的字节数组）
     每次读取会先去缓冲区拿，缓冲区没有了再去文件中拿，并尽可能装满缓冲区，如果文件里也没有了就返回-1
     ps：如果下一步文件被清空了，它还是会有数据，缓冲区的数据

     new FileWriter("") 底层同上
     ps：如果缓冲区一次性装满8192个字节，则会自动写入文件当中
         没装满的情况下，用 .flush() 和 .close() 方法会将缓冲区的写入文件中，前者是执行完还能直接写，后者是执行完就关闭了
    */
}
